function func<T>(a: Array<T>, i: number, j: number) {
  const pivot = a[i];
  let curr_i = i;
  i = i + 1;
  while (i < j) {
    if (a[i] < pivot) {
      a[curr_i] = a[i];
      curr_i++;
      i++;
    } else {
      const tmp = a[i];
      a[i] = a[j - 1];
      a[j - 1] = tmp;
      j--;
    }
  }
  a[curr_i] = pivot;
  return curr_i;
}

let a: Array<string> = ["c", "b", "d", "e", "a", "f"];
console.log(func<string>(a, 0, a.length), a);
